home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / psizzl / citation.psizzl (.txt) < prev    next >
LaTeX Document  |  1992-08-26  |  18KB  |  576 lines

  1. % CITATION PSIZZL  - citation macros
  2. % The first time you cite the reference, use the `=' syntax:
  3. % this creates an entry in the table of references.
  4. % here's how to refer to a reference the first time:
  5. % "...as was shown first in\reference\DrellYan={%
  6. %   Drell,~S.~D., Levy,~D.~J., Yan,~T.~M.,
  7. %   A FIELD THEORETIC MODEL FOR ELECTRON - NUCLEON DEEP INELASTIC
  8. %   SCATTERING,
  9. %   Phys.~Rev.~Lett. \refspec{22, 744-8(1969)}.
  10. %   }%
  11. % here's how to cite the ref:
  12. % "...hadrons produced in this way\cite\DrellYan\ obey a distribution..."
  13. % or:
  14. % "...as was shown first in \reference\DrellYan .  "
  15. % or:
  16. % "...end of sentence. \Reference\DrellYan\ has the somewhat curious.."
  17. % References cited this way will have automatic style switching.
  18. % Figures and tables are to be defined in an analogous way
  19. % The first time a figure is referred to:
  20. % "... these data are displayed in
  21. %  \figure\<mnemonic>=
  22. %  {Title of the figure}{caption}{<the figure itself>} more text..."
  23. % and on subsequent references:
  24. % "...the cross section ( see \figure\nanobarn)..."
  25. % or:
  26. % "...end of sentence. \Figure\newcross\ shows how the new physics..."
  27. % Tables are exactly analogous to figures.
  28. % Equations are defined:
  29. % \equation\<mnemonic>={<equation expression without $$'s>}%
  30. % e.g.:
  31. % \equation\quadrature={x^2+y^2=z^2}%
  32. % to use this construct:
  33. % "...end of sentence. \Equation\quadrature\ therefore represents..."
  34. \def\p@gerightglue{\hss}\def\p@geleftglue{\hss}%
  35. \def\Ps@zerr#1#2{\errhelp=#2\errmessage{Psizzl: #1}}%
  36. \newhelp\Ps@zmsngtxt{%
  37.    I expected you to define this name here, but you didn't.
  38.    You need to define this name here.
  39.    Hit <CR> to continue processing.
  40.    }%
  41. \newhelp\Ps@zmltptxt{%
  42.    I already encountered this name, but you're trying to define it here.
  43.    You need to give the defining text the first time the name is used,
  44.    not here. Hit <CR> to continue.
  45.    }%
  46. \newif\iftitleincaption\titleincaptiontrue
  47. \newif\ifv@ta
  48. \def\vita#1{%
  49.    \v@tatrue\def\v@ta{#1}%
  50.    }%
  51. \def\v@tahead{\uppercase{Vita}}%
  52. % needed: macros to assist in the preparation of the author list on the
  53. % titlepage
  54. % Macros common to references and title page addresses
  55. \def\c@tset{\c@tMactive\c@tVset\l@twrite}%
  56. \def\xd@fnumber#1#2{\xdef#1{{\number\m@decount}}\m@debump}%
  57. \def\xd@fletter#1#2{\xdef#1{{\char\number\m@decount}}\m@debump}%
  58. \def\xd@ftext#1#2{\xdef#1{{\it#2}}}%
  59. \def\xd@fch@pt#1{%
  60.    \xdef#1{\ch@ptercite{\ch@ptername}{\number\m@decount}}\m@debump
  61.    }%
  62. \def\m@debump{%
  63.    \global\advance\m@decount\@ne \global\advance\m@detotal\@ne
  64.    }%
  65. \def\m@deref#1{%
  66.    \begingroup
  67.    \ifx=\next
  68.       \aftergroup\m@detypr\aftergroup#1%
  69.       \c@tset
  70.       \begingroup\aftergroup\g@ttok\aftergroup\m@decap
  71.       \begingroup\aftergroup\g@ttok\aftergroup\m@deeqs
  72.       \else
  73.       \Ps@zerr{missing text for \string#1}\Ps@zmsngtxt
  74.       \fi
  75.    \endgroup
  76.    }%
  77. \def\m@detypr#1{\c@tMeoline
  78.    \edef\next{\noexpand#1{\the\m@decap}}\global\m@decap{}%
  79.    \begingroup\aftergroup\expandafter\aftergroup\m@dedoembed
  80.       \endgroup\next
  81.    }%
  82. % Reference Macros
  83. \newcount\r@ftotal\r@ftotal\z@
  84. \newcount\r@fcount\r@fcount\@ne
  85. \newif\ifr@frenumber\r@frenumberfalse%
  86. \newif\ifch@pterrenumber\ch@pterrenumberfalse%
  87. \newwrite\r@fcapwrite\def\r@fcapfile{refcap.psiztemp }%
  88. \def\r@fcaphead{\uppercase{References}}%
  89. \newwrite\r@ftabwrite\def\r@ftabfile{reftab.psiztemp }%
  90. \def\r@ftabhead{\uppercase{List of References}}%
  91. \def\hyphen{-}\def\comma{,}%
  92. \newif\ifciter@f
  93. \newif\ifsuperr@f\superr@ftrue
  94. \newif\ifc@tenull
  95. \newif\ifnewr@f
  96. \def\refspec#1,#2(#3){{\bf#1}, #2 (#3)}%
  97. \def\volyearpageref{\gdef\refspec##1,##2(##3){{\bf##1} (##3) ##2}}%
  98. \def\cernref{%vol
  99.    \gdef\refspec##1,##2(##3){%
  100.       %author, year, {\it Journal} Publisher {\fb Vol}, page.
  101.       }%
  102.    }%
  103. \def\refstyle{%
  104.    \r@fstyle
  105.    }%
  106. \def\r@fstyle#1{\r@fbeg#1\r@fend}%
  107. \def\lapperiod{%
  108.    \hbox to \z@{.\hss}%
  109.    }%
  110. \def\r@fsupbeg{$^\bgroup}\def\r@fsupend{\egroup$}%
  111. \def\r@fsupparbeg{$^\bgroup(}\def\r@fsupparend{)\egroup$}%
  112. \def\r@fbrabeg{[}\def\r@fbraend{]}%
  113. \def\r@fparbeg{(}\def\r@fparend{)}%
  114. \def\superreference{%
  115.    \let\r@fbeg\r@fsupbeg\let\r@fend\r@fsupend
  116.    }\superreference
  117. \def\bracketreference{%
  118.    \let\r@fbeg\r@fbrabeg\let\r@fend\r@fbraend
  119.    }%
  120. \def\parenreference{%
  121.    \let\r@fbeg\r@fparbeg\let\r@fend\r@fparend
  122.    }%
  123. \def\superparenreference{%
  124.    \let\r@fbeg\r@fsupparbeg\let\r@fend\r@fsupparend
  125.    }%
  126. \def\cite{%
  127.    \let\t@g=\r@fstyle\r@fget
  128.    }%
  129. \def\hideref{%
  130.    \let\t@g\g@ble\r@fget
  131.    }%
  132. \def\bareref{%
  133.    \let\t@g\relax\r@fget
  134.    }%
  135. \def\reference{%
  136.    \let\t@g=\r@f\r@fget
  137.    }%
  138. \def\Reference{%
  139.    \let\t@g=\R@f\r@fget
  140.    }%
  141. \def\r@f{Ref.\tie}%
  142. \def\R@f{Reference\tie}%
  143. \def\r@fget{%
  144.    \let\m@dedef=\m@deref\let\m@degobble=\g@bble
  145.    \let\m@decount=\r@fcount\let\m@detotal=\r@ftotal
  146.    \let\m@dedoembed\r@fembed
  147.    \let\p@riod=\p@int
  148.    \l@tnxt\m@denxt
  149.    }%
  150. \def\r@fembed#1#2{\xd@fnumber#1{#2}%
  151.    \t@g{#1}\c@tMeoline\@dd\r@fcapwrite{#1\p@riod}{{\rm#2}}%
  152.    }%
  153. % following 6 lines define macros to be used in mutiple references
  154. \def\f@rstcite{\let\cite\s@ccite\let\sp@nit\g@ble\bareref}%
  155. \def\s@ccite{\let\cite\th@rdcite\let\sp@nit\comma\hideref}%
  156. \def\th@rdcite{\let\cite\hideref\let\sp@nit\dash\hideref}%
  157. \def\spancite{\begingroup\let\cite\f@rstcite\r@fbeg}%
  158. \def\groupcite{\begingroup\let\cite\bareref\let\sp@nit\g@ble\r@fbeg}%
  159. \def\endcite{\sp@nit\mn@m\r@fend\endgroup}%
  160. \def\comma{,}\def\dash{-}%
  161. %  author address macros
  162. % three styles:
  163. % 1 - inline author addresses
  164. % 2 - footnoted address
  165. % 3 - addresses in ref list
  166. \newcount\@ddrcount
  167. \newcount\@ddrtotal
  168. \newif\ifc@teaddress
  169. \def\rm@a{`a}\def\gr@a{\tw@}%
  170. \def\@ddsuper#1{$^{(#1)}$}%
  171. \adddef\resd@c{\@ddrcount\@ddrz@\@ddrtotal\z@}%
  172. \def\pr@sent{Present address: }%
  173. \def\authoraddress{%
  174.    \let\@ddrpre=\relax\@ddrget
  175.    }%
  176. \def\presentaddress{%
  177.    \let\@ddrpre=\pr@sent\@ddrget
  178.    }%
  179. \def\addressreference{% author addresses are references
  180.    \let\@ddraction=\@ddradd
  181.    \let\@ddrxdef=\xd@fletter
  182.    \let\@ddrtag=\@ddsuper
  183.    \let\@ddrt@tal=\r@ftotal
  184.    \let\@ddrz@\rm@a % alt: \let\@ddrz@\gr@a
  185.    \c@teaddresstrue
  186.    }%
  187. \def\@ddradd#1#2{%
  188.    \t@g{#1}\c@tMeoline\@dd\r@fcapwrite{(#1)}{{\rm\@ddrpre#2}}%
  189.    }%
  190. \def\addressfootnote{% author addresses are footnotes
  191.    \let\@ddraction=\@ddrfoot
  192.    \let\@ddrxdef=\xd@fletter
  193.    \let\@ddrtag=\@ddsuper
  194.    \let\@ddrt@tal=\@ddrtotal
  195.    \let\@ddrz@\rm@a
  196.    \c@teaddresstrue
  197.    }%
  198. \def\@ddrfoot#1#2{\footnote{\t@g{#1}}{{\rm\@ddrpre#2}}}%
  199. \def\addressinline{% author addresses are inline
  200.    \let\@ddraction=\@ddrinline
  201.    \let\@ddrxdef=\xd@ftext
  202.    \let\@ddrtag=\breaktitle
  203.    \let\@ddrt@tal=\@ddrtotal
  204.    \let\@ddrz@\z@
  205.    \c@teaddressfalse
  206.    }%
  207. \def\@ddrinline#1#2{{\rm\t@g#2}}%
  208. \def\@ddrget{%
  209.    \let\m@dedef=\m@deref\let\m@degobble=\g@bble
  210.    \let\m@decount=\@ddrcount\let\m@detotal=\@ddrt@tal
  211.    \let\t@g=\@ddrtag
  212.    \let\m@dedoembed=\@ddrembed
  213.    \let\p@riod=\p@int
  214.    \l@tnxt\m@denxt
  215.    }%
  216. \def\@ddrembed#1#2{\@ddrxdef#1{#2}\@ddraction#1{#2}}%
  217. \addressfootnote
  218. % EQUATION NUMBER MACRO
  219. \newcount\eq@count\eq@count\@ne\newcount\eq@total\eq@total\z@
  220. \newwrite\eq@write
  221. \def\eq@file{equation.textemp }%
  222. \def\eq@head{\uppercase{List of Equations}}%
  223. \def\display{%
  224.    \let\t@g\g@ble\eq@get
  225.    }%
  226. \def\Equation{%
  227.    \let\t@g\Eq@\eq@get
  228.    }%
  229. \def\Eq@{Equation\tie}%
  230. \def\equation{%
  231.    \let\t@g\eq@\eq@get
  232.    }%
  233. \def\eq@{Eqn.\tie}%
  234. \def\eq@get{%
  235.    \let\m@dedef=\m@deref\let\m@degobble=\g@bble
  236.    \let\m@decount=\eq@count\let\m@detotal=\eq@total
  237.    \let\m@dedoembed=\@qnembed
  238.    \let\p@riod=\d@sh
  239.    \l@tnxt\m@denxt
  240.    }%
  241. \def\@qnembed#1#2{\xd@fch@pt#1\t@g{#1}{\l@tMspace$$#2\eqno(#1)$$}}%
  242. % macros common to \figure and \table commands
  243. \def\m@denxt#1{\def\mn@m{#1}%
  244.    \ifx\undefined#1\let\temp\m@dedef\else\let\temp\m@dechk\fi
  245.    \temp#1%
  246.    }%
  247. \def\m@dechk#1{\t@g{#1}%
  248.    \ifx=\next\let\temp\m@lterr\else\let\temp\g@ble\fi\temp#1%
  249.    }%
  250. \def\m@lterr#1{%
  251.    \Ps@zerr{multiple text for \string#1}\Ps@zmltptxt\m@degobble
  252.    }%
  253. \def\g@bbbble#1#2#3#4{}%
  254. \def\g@bbble#1#2#3{}%
  255. \def\g@bble#1#2{}%
  256. \def\g@ble#1{}%
  257. \def\m@deset#1{%
  258.    \begingroup
  259.    \ifx=\next
  260.       \aftergroup\m@detype\aftergroup#1%
  261.       \c@tset
  262.       \begingroup\aftergroup\g@ttok\aftergroup\m@defig
  263.       \begingroup\aftergroup\g@ttok\aftergroup\m@decap
  264.       \begingroup\aftergroup\g@ttok\aftergroup\m@detit
  265.       \begingroup\aftergroup\g@ttok\aftergroup\m@deeqs
  266.       \else
  267.       \Ps@zerr{missing text for \string#1}\Ps@zmsngtxt
  268.       \fi
  269.    \xd@fch@pt#1% chapter number is embedded in this number.
  270.    \t@g#1% the rest of this must not generate any unwanted spaces!
  271.    \endgroup
  272.    }%
  273. \newtoks\m@deeqs\newtoks\m@detit\newtoks\m@decap\newtoks\m@defig
  274. \def\m@detype#1{\c@tMeoline
  275.    \edef\next{\noexpand#1{\the\m@detit}{\the\m@decap}{\the\m@defig}}%
  276.    \global\m@detit{}\global\m@decap{}\global\m@defig{}%
  277.    \begingroup\aftergroup\expandafter
  278.       \ifm@dembed\aftergroup\m@dedoembed\else\aftergroup\m@denoembed\fi
  279.       \endgroup\next
  280.    }%
  281. % end of macros common to \table and \figure commands
  282. % FIGURE CAPTION MACRO
  283. % The Figure Caption macro generates a list of figure captions.  It
  284. % is similar to the reference macro.
  285. \newif\iffigureembed\figureembedtrue
  286. \newif\iff@gmidpage\f@gmidpagetrue
  287. \newif\iff@gfullpage
  288. \newcount\f@gcount\f@gcount\@ne
  289. \newcount\f@gtotal\f@gtotal\z@
  290. \newwrite\f@gcapwrite\def\f@gcapfile{figcap.psiztemp }%
  291. \def\f@gcaphead{\uppercase{Figure Captions}}%
  292. \newwrite\f@gtabwrite\def\f@gtabfile{figtab.psiztemp }%
  293. \def\f@gtabhead{{List of Figures}}%
  294. \newwrite\f@gfigwrite\def\f@gfigfile{figfig.psiztemp }%
  295. \def\f@ginsert{%
  296.    \iff@gfullpage\let\next=\pageinsert
  297.       \else\iff@gmidpage\let\next=\ordinsert
  298.          \else\let\next=\topinsert
  299.          \fi
  300.       \fi\next
  301.    }%
  302. \def\f@gcaptext#1#2#3{%
  303.    \noindent\F@g#1. \iftitleincaption#2\fi#3%
  304.    }%
  305. \def\f@gcaption#1#2#3{%
  306.    \iff@gfullpage\vfill\f@gcaptext{#1}{#2}{#3}%
  307.       \else{\narrower{\f@gcaptext{#1}{#2}{#3}}\par}%
  308.       \fi
  309.    }%
  310. \def\figure{%
  311.    \def\t@g{\f@g}\f@gget%
  312.    }%
  313. \def\Figure{%
  314.    \def\t@g{\F@g}\f@gget
  315.    }%
  316. \def\hidefig{%
  317.    \let\t@g\g@ble\f@gget
  318.    }%
  319. \def\barefig{%
  320.    \let\t@g\relax\f@gget
  321.    }%
  322. \def\f@g{Fig.\tie}%
  323. \def\F@g{Figure\tie}%
  324. \def\f@gget{%
  325.    \let\m@dedef=\m@deset\let\m@degobble\g@bbbble
  326.    \let\m@decount=\f@gcount\let\m@detotal=\f@gtotal
  327.    \let\ifm@dembed=\iffigureembed
  328.    \let\m@dedoembed\f@gpar\let\m@denoembed\f@gnow
  329.    \let\p@riod=\p@int
  330.    \l@tnxt\m@denxt
  331.    }%
  332. \def\f@gpar#1#2#3#4{\ch@ckpar
  333.    \adddef\m@dpar{\l@tMspace
  334.       \f@ginsert
  335.          \singlespace
  336.          \ifdraft\else\line{\p@geleftglue\vbox{#4}\p@gerightglue}\fi
  337.          \f@gcaption#1{#2}{#3}%
  338.          \@ddtab\f@gtabwrite#1{#2}%
  339.          \endinsert
  340.       }%
  341.    }%
  342. \def\f@gnow#1#2#3#4{%
  343.    {\l@twrite
  344.       \@ddtab\f@gtabwrite#1{#2}%
  345.       \@dd\f@gcapwrite{#1.}{\iftitleincaption#2\fi#3}%
  346.       \immediate\write\f@gfigwrite{#4}%
  347.       \immediate\write\f@gfigwrite{\hang\F@g#1.\endpage}%
  348.       }%
  349.    }%
  350. % TABLE CAPTION MACRO
  351. % The Table Caption macro generates a list of table captions.
  352. % It is similar to the figure macro.
  353. \newif\iftableembed\tableembedtrue
  354. \newif\ift@bmidpage\t@bmidpagetrue
  355. \newif\ift@bfullpage
  356. \newcount\t@bcount\t@bcount\@ne \newcount\t@btotal\t@btotal\z@
  357. \newwrite\t@bcapwrite\def\t@bcapfile{tabcap.psiztemp }%
  358. \def\t@bcaphead{\uppercase{Table Captions}}%
  359. \newwrite\t@btabwrite\def\t@btabfile{tabtab.psiztemp }%
  360. \def\t@btabhead{{List of Tables}}%
  361. \newwrite\t@bfigwrite\def\t@bfigfile{tabfig.psiztemp }%
  362. \def\t@binsert{%
  363.    \ift@bfullpage\let\next=\pageinsert
  364.       \else\ift@bmidpage\let\next=\ordinsert
  365.          \else\let\next=\topinsert
  366.          \fi
  367.       \fi\next
  368.    }%
  369. \def\t@bcaptext#1#2#3{%
  370.    \noindent\T@b#1\p@riod\ \iftitleincaption#2\fi#3%
  371.    }%
  372. \def\t@bcaption#1#2#3{%
  373.    \ift@bfullpage\t@bcaptext{#1}{#2}{#3}\par
  374.       \else\ift@bmidpage\bigskip\fi
  375.       {\narrower{\t@bcaptext{#1}{#2}{#3}\par}}\medskip
  376.       \fi
  377.    }%
  378. \def\table{%
  379.    \let\t@g\t@b\t@bget
  380.    }%
  381. \def\Table{%
  382.    \let\t@g\T@b\t@bget
  383.    }%
  384. \def\hidetab{%
  385.    \let\t@g\g@ble\t@bget
  386.    }%
  387. \def\baretab{%
  388.    \let\t@g\relax\t@bget
  389.    }%
  390. \def\t@b{Table\tie}\def\T@b{Table\tie}%
  391. \def\t@bget{%
  392.    \let\m@dedef=\m@deset\let\m@degobble=\g@bbbble
  393.    \let\m@decount=\t@bcount\let\m@detotal=\t@btotal
  394.    \let\ifm@dembed=\iftableembed
  395.    \let\m@dedoembed\t@bpar\let\m@denoembed\t@bnow
  396.    \let\p@riod=\p@int
  397.    \l@tnxt\m@denxt
  398.    }%
  399. \def\t@bpar#1#2#3#4{\ch@ckpar
  400.    \adddef\m@dpar{\l@tMspace
  401.       \t@binsert
  402.          \singlespace
  403.          \t@bcaption#1{#2}{#3}%
  404.          \ifdraft\else\line{\p@geleftglue\vbox{#4}\p@gerightglue}\fi
  405.          \@ddtab\t@btabwrite#1{#2}%
  406.          \endinsert
  407.       }%
  408.    }%
  409. \def\t@bnow#1#2#3#4{%
  410.    {\l@twrite
  411.       \@ddtab\t@btabwrite#1{#2}%
  412.       \@dd\t@bcapwrite{#1.}{\iftitleincaption#2\fi#3}%
  413.       \immediate\write\t@bfigwrite{#4}%
  414.       \immediate\write\t@bfigwrite{\hang\T@b#1.\endpage}%
  415.       }%
  416.    }%
  417. % COMMON MACROS FOR ALL THE ABOVE
  418. % Following three macros implement the ordered midinsert: \ordinsert.
  419. % This repairs the defect in \midinsert which can cause the order of
  420. % the inserts in the typeset document to be different from the
  421. % order in which they appear in the source.
  422. % Note that a \midinsert is translated into a \topinsert if it is too big
  423. % or if there are any inserts carried over at all. So a split footnote
  424. % would have an interference effect here.
  425. \newif\if@ord
  426. \def\ordinsert{\@ordtrue\@midtrue\@ins}%
  427. \def\endinsert{\egroup % finish the \vbox
  428.   \if@mid\p@gefalse\if@ord\ifnum\insertpenalties>\z@\@midfalse\fi\fi\fi
  429.   \if@mid
  430.     \dimen@\ht\z@\advance\dimen@\dp\z@\advance\dimen@\bigskipamount
  431.     \advance\dimen@\pagetotal\advance\dimen@\pagedepth
  432.     \advance\dimen@-\pageshrink\advance\dimen@-\pagegoal
  433.     \ifdim\dimen@>\z@\@midfalse\fi
  434.     \fi
  435.   \if@mid \bigskip\box\z@\bigbreak
  436.     \else\insert\topins{\penalty100 % floating insertion
  437.       \splittopskip\z@skip
  438.       \splitmaxdepth\maxdimen \floatingpenalty\z@
  439.       \ifp@ge \dimen@\dp\z@
  440.         \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
  441.         \else \box\z@\nobreak\vskip\@ne\bigskipamount
  442.         \fi
  443.       }%
  444.     \fi\endgroup\@ordfalse
  445. % Following five macros examine successive tokens until something other
  446. % than a <CR> is seen. This, then becomes the tokens put into the
  447. % token register which is the argument of \g@ttok.
  448. % In this way, the tokens are absorbed with <CR> as an active character
  449. % but still preserving TeX's property of spacing past blanks (including
  450. % a <CR>) as it is absorbing the arguments of a macro.
  451. \def\g@ttok#1{\let\temp#1\l@kt@k}%
  452. \def\l@kt@k{\futurelet\next\d@ct@k}%
  453. \def\d@ct@k{%
  454.    \if\next\h@tMactive\let\next\g@bt@k\else\let\next\g@tt@k\fi\next
  455.    }%
  456. \def\g@tt@k#1{\global\temp{#1}\endgroup}%
  457. \def\g@bt@k#1{\l@kt@k}%
  458. \def\ch@ckpar{%
  459.    \ifx\par\endgraf\gdef\par{\m@dpar}%
  460.       \gdef\m@dpar{\gdef\m@dpar{}\global\let\par\endgraf\par}%
  461.       \fi
  462.    }%
  463. \def\l@tnxt#1#2{\def\temp{#1#2}\futurelet\next\temp}%
  464. \def\lowercasecite{%
  465.    \gdef\r@f{ref.\tie}\gdef\f@g{fig.\tie}%
  466.    \gdef\t@b{table\tie}\gdef\eq@{eqn.\tie}%
  467.    }%
  468. \adddef\l@twrite{% define in macros
  469.    \l@tMother
  470.    \let\figure=0\let\Figure=0%
  471.    \let\table=0\let\Table=0%
  472.    \let\reference=0\let\Reference=0\let\cite=0%
  473.    \let\authoraddress=0\let\presentaddress=0%
  474.    \let\equation=0\let\Equation=0\let\display=0%
  475.    \let\picture=0%
  476.    }%
  477. \gdef\@dd#1#2#3{% add something to the specified file
  478.    {\l@twrite
  479.       \immediate\write#1{\noexpand\hangpar{.08}{#2\quad}\percent}%
  480.       \immediate\write#1{#3}%
  481.       }%
  482.    }%
  483. \def\hangpar#1#2{%
  484.    \par\noindent\hangindent#1\refsize
  485.    \hbox to #1\refsize{\hfill#2}%
  486.    }%
  487. \def\@ddtab#1#2#3{%
  488.    {\l@twrite
  489.       \write#1{%
  490.          \line{%
  491.             \quad\strut#2\quad\h@tMother#3\h@tMother
  492.             \leaderfil\number\p@gecount
  493.             }%
  494.          }%
  495.       }%
  496.    }%
  497. % MACROS FOR OUTPUTTING CITATIONS AND FOR RESETTING THEM
  498. \def\re@dback#1#2#3#4{%
  499.    \ifnum#4>\z@
  500.       \ifproof\bigskip\else\endpage\fi
  501.       {\bf\centertitle#3}%
  502.       \immediate\closeout#1
  503.       \unlock\input#2\lock
  504.       \fi
  505.    }%
  506. \def\c@teout{%
  507.    \ifnum\r@ftotal>\z@
  508.       \ifproof\else\endpage\fi
  509.       \xdef\writeit{%
  510.          \write\ch@pterwrite{%
  511.             \line{%
  512.                \strut\h@tMother\r@fcaphead\h@tMother
  513.                \leaderfil\noexpand\number\p@gecount
  514.                }%
  515.             }%
  516.          }\writeit
  517.       \re@dback\r@fcapwrite\r@fcapfile\r@fcaphead\r@ftotal
  518.       \ifproof\else\endpage\fi
  519.       \fi
  520.    \ifv@ta
  521.       \endpage
  522.       \xdef\writeit{%
  523.          \write\ch@pterwrite{%
  524.             \line{%
  525.                \strut\h@tMother\v@tahead\h@tMother
  526.                \leaderfil\noexpand\number\p@gecount
  527.                }%
  528.             }%
  529.          }\writeit
  530.       \centertitle{\v@tahead}\v@ta
  531.       \fi
  532.    \iftableembed\else
  533.       \re@dback\t@bcapwrite\t@bcapfile\t@bcaphead\t@btotal
  534.       \fi
  535.    \iffigureembed\else
  536.       \re@dback\f@gcapwrite\f@gcapfile\f@gcaphead\f@gtotal
  537.       \fi
  538.    }%
  539. \def\c@tereset{%
  540.    \global\f@gcount\@ne
  541.    \global\t@bcount\@ne
  542.    \global\eq@count\@ne
  543.    \global\r@fcount\@ne
  544.    \global\f@gtotal\z@
  545.    \global\t@btotal\z@
  546.    \global\r@ftotal\z@
  547.    \n@llout\r@ftabwrite\r@ftabfile
  548.    \n@llout\r@fcapwrite\r@fcapfile
  549.    \n@llout\f@gtabwrite\f@gtabfile
  550.    \n@llout\f@gcapwrite\f@gcapfile
  551.    \n@llout\f@gfigwrite\f@gfigfile
  552.    \n@llout\t@btabwrite\t@btabfile
  553.    \n@llout\t@bcapwrite\t@bcapfile
  554.    \n@llout\t@bfigwrite\t@bfigfile
  555.    \n@llout\eq@write\eq@file
  556.    }%
  557. \adddef\b@dyreset{\c@tereset}%
  558. \def\c@teclear{%
  559.    \ifch@pterrenumber
  560.       \global\f@gcount\@ne
  561.       \global\t@bcount\@ne
  562.       \global\eq@count\@ne
  563.       \fi
  564.    \ifr@frenumber\global\r@fcount\@ne\fi
  565.    }%
  566. \def\f@gt@bhead{\f@gt@bheadfalse
  567.    \ifnum\t@btotal>\z@\f@gt@bheadtrue
  568.       \line{\strut\t@btabhead\leaderfil\romannumeral-\t@bpagecount}%
  569.       \fi
  570.    \ifnum\f@gtotal>\z@\f@gt@bheadtrue
  571.       \line{\strut\f@gtabhead\leaderfil\romannumeral-\f@gpagecount}%
  572.       \fi
  573.    }%
  574. % when text is missing, must still typeset the ref number.
  575. % show error messages in the documentation
  576.